package main

// 自己写的双指针， 想复杂了比官方写的。
func modifyString(s string) string {
	arr := []byte(s)
	n := len(arr)
	// 定义双指针解题
	for i, j := -1, 0; j < n; {
		if arr[j] != '?' {
			i++
			j++
		} else {
			for j < n && arr[j] == '?' {
				j++
			}
		}
		// 填充
		for i+1 < j {
			var left byte = 0
			var right byte = 0
			if i >= 0 {
				left = arr[i]
			}
			if j < n && s[j] != '?' {
				right = s[j]
			}
			i += 1
			for c := 'a'; c <= 'z'; c++ {
				if byte(c) != left && byte(c) != right {
					arr[i] = byte(c)
					break
				}
			}
		}
	}
	return string(arr)
}
